function reverseStr(str) {
    return str.split("").reverse().join("");
}

function countChars(str) {
    var resultObj = {};

    for (var i = 0; i < str.length; i++) {
        var char = str[i];
        // if(resultObj[char]===undefined/null/0/false/nan/"")
        if (!resultObj[char]) {
            resultObj[char] = 1;
        } else {
            resultObj[char]++;
        }
    }

    return resultObj;
}

/**
 * 从入参str中摘取不重复的字符
 * @param {string} str 要进行字符摘取的字符串
 * @returns 所有不重复字符按顺序拼接而成的字符串
 */
function pickUnrepeatedChars(str) {
    var unrepeatedStr = "";
    for (var i = 0; i < str.length; i++) {
        unrepeatedStr += str.indexOf(str[i]) === i ? str[i] : "";
    }
    return unrepeatedStr;
}

/**
 * 判断str是否可回文字符串
 * @param {string} str 判断是否可回文字符串的字符串
 * @returns 是否可回文字符串
 */
function isReversibleStr(str) {
    return str.split("").reverse().join("") === str;
}

/**
 * 从母本字符串str中摘取随机字符并返回
 * @param {string} str 要选取随机字符的母本字符串
 * @returns 随机字符
 */
function getRandomChar(str) {
    var randomIndex = parseInt(str.length * Math.random());
    return str[randomIndex];
}

/* 
对象转网络请求参数串(params)形式 
例如：{username:admin,password:123456} 转化为 username=admin&password=123456
*/
// console.log(objToParamsStr({ username: "admin", password: "123456" }));
function objToParamsStr(obj) {
    // {a:1,b:2} 转化为 a=1&b=2
    let params = "";
    for (let key in obj) {
        params += `${key}=${obj[key]}&`;
    }
    params = params.slice(0, -1);
    return params;
}

/* 名字生成器 */
class NameGenerator {
    constructor() {
        // 一堆形容词
        this.adjs =
            "大小多少快慢好坏大小贫富贵贱贤愚聪笨东西南北高矮胖肥瘦美丑善恶强弱帅矬黑白";

        // 一堆连词
        this.conjs = "又且而尔并特更";

        // 随机店名= 一个随机形容词 + 一个随机连词 + 一个随机形容词 => 好又多
    }
    // 该工具不需要任何的天然属性，此处省略constructor,事实上会默认继承Object
    getRandom(a, b) {
        return a + parseInt(Math.random() * (b - a + 1));
    }

    /* 根据类型号1 2 3 获得一个随机店名 */
    getRandomShopname(type) {
        let name =
            // 随机取一个形容词
            this.adjs[this.getRandom(0, this.adjs.length - 1)] +
            // 随机取一个连词
            this.conjs[this.getRandom(0, this.conjs.length - 1)] +
            // 随机取一个形容词
            this.adjs[this.getRandom(0, this.adjs.length - 1)];

        // 根据类型不同 拼接一个后缀
        switch (type) {
            case "Restaurant":
                name += "大食堂";
                break;
            case "Supermarket":
                name += "大卖场";
                break;
            case "Hotel":
                name += "大酒店";
                break;
            default:
                name += "大商号";
                break;
        }
        return name;
    }
}
